20959
21744
Svaret på dette spørsmålet er et fellesskapsinnsats. Rediger eksisterende svar for å forbedre dette innlegget. Det godtar for øyeblikket ikke nye svar eller interaksjoner.
Hvordan kan jeg omdirigere brukeren fra en side til en annen ved hjelp av jQuery eller ren JavaScript? 
1
2
Neste
Man omdirigerer ikke bare ved hjelp av jQuery
jQuery er ikke nødvendig, og window.location.replace (...) vil best simulere en HTTP-omdirigering.
window.location.replace (...) er bedre enn å bruke window.location.href, fordi erstatte () ikke holder den opprinnelige siden i øktloggen, noe som betyr at brukeren ikke vil bli sittende fast i en uendelig back- knapp fiasko.
Hvis du vil simulere noen som klikker på en lenke, bruk
location.href
Hvis du vil simulere en HTTP-viderekobling, bruker du location.replace
For eksempel:
// lignende oppførsel som en HTTP-omdirigering
window.location.replace ("http://stackoverflow.com");
// lignende oppførsel som å klikke på en lenke
window.location.href = "http://stackoverflow.com";
|
ADVARSEL: Dette svaret er bare gitt som en mulig løsning; det er åpenbart ikke den beste løsningen, da det krever jQuery. I stedet foretrekker du den rene JavaScript-løsningen.
$ (location) .attr ('href', 'http://stackoverflow.com')
|
Standard "vanilje" JavaScript-måte å omdirigere en side på
window.location.href = 'newPage.html';
Eller enklere: (siden vinduet er globalt)
location.href = 'newPage.html';
Hvis du er her fordi du mister HTTP_REFERER når du viderekobler, fortsett å lese:
(Ellers ignorere denne siste delen)
Følgende avsnitt er for de som bruker HTTP_REFERER som en av mange sikkerhetstiltak (selv om det ikke er et godt beskyttende tiltak). Hvis du bruker Internet Explorer 8 eller lavere, går disse variablene tapt når du bruker en hvilken som helst form for omdirigering av JavaScript-sider (location.href, etc.).
Nedenfor skal vi implementere et alternativ for IE8 og lavere, slik at vi ikke mister HTTP_REFERER. Ellers kan du nesten alltid bare bruke window.location.href.
Testing mot HTTP_REFERER (URL-liming, økt osv.) Kan bidra til å fortelle om en forespørsel er legitim.
(Merk: det er også måter å omgå / forfalske disse henviserne, som bemerket av droops lenke i kommentarene)
Enkel løsning for testing av tvers av nettlesere (fallback til window.location.href for Internet Explorer 9+ og alle andre nettlesere)
Bruk: omdirigering ('anotherpage.aspx');
funksjon omdirigering (url) {
var ua = navigator.userAgent.toLowerCase (),
isIE = ua.indexOf ('msie')! == -1,
versjon = parseInt (ua.substr (4, 2), 10);
// Internet Explorer 8 og lavere
if (isIE && versjon <9) {
var link = document.createElement ('a');
link.href = url;
document.body.appendChild (lenke);
link.click ();
}
// Alle andre nettlesere kan bruke standard window.location.href (de mister ikke HTTP_REFERER som Internet Explorer 8 og lavere gjør)
annet {
window.location.href = url;
}
}
|
Det er mange måter å gjøre dette på.
// vindu. plassering
window.location.replace ('http://www.example.com')
window.location.assign ('http://www.example.com')
window.location.href = 'http://www.example.com'
document.location.href = '/ sti'
// vindu.historie
window.history.back ()
window.history.go (-1)
// window.navigate; KUN for gamle versjoner av Internet Explorer
window.navigate ('top.jsp')
// Sannsynligvis ingen bueno
self.location = 'http://www.example.com';
top.location = 'http://www.example.com';
// jQuery
$ (location) .attr ('href', 'http: //www.example.com')
$ (vindu) .attr ('location', 'http: //www.example.com')
$ (location) .prop ('href', 'http://www.example.com')
|
Dette fungerer for alle nettlesere:
window.location.href = 'your_url';
|
Det ville hjelpe hvis du var litt mer beskrivende i det du prøver å gjøre. Hvis du prøver å generere sidedata, er det noen alternativer for hvordan du gjør dette. Du kan generere separate lenker for hver side du vil kunne komme direkte til.
 1 
 2 
 3 
...
Merk at gjeldende side i eksemplet håndteres annerledes i koden og med CSS.
Hvis du vil at de sidede dataene skal endres via AJAX, er det her jQuery ville komme inn. Det du ville gjort er å legge til en klikkebehandler til hver av ankerkodene som tilsvarer en annen side. Denne klikkbehandleren vil påkalle noe jQuery-kode som går og henter neste side via AJAX og oppdaterer tabellen med de nye dataene. Eksemplet nedenfor forutsetter at du har en webtjeneste som returnerer de nye sidedataene.
$ (dokument). klar (funksjon () {
$ ('a.pager-link'). klikk (funksjon () {
var side = $ (dette) .attr ('href'). delt (/ \? /) [1];
$ .ajax ({
type: 'POST',
url: '/ path-to-service',
data: side,
suksess: funksjon (innhold) {
$ ('# myTable'). html (innhold); // erstatte
}
});
returner falsk; // for å stoppe lenken
});
});
|
Jeg tror også at location.replace (URL) er den beste måten, men hvis du vil varsle søkemotorene om omdirigering (de analyserer ikke JavaScript-koden for å se omdirigering), bør du legge til rel = "canonical" meta tag til nettstedet ditt.
Å legge til en noscript-seksjon med en HTML-oppdateringsmetakode i er også en god løsning. Jeg foreslår at du bruker dette JavaScript-omdirigeringsverktøyet tillage omdirigeringer. Den har også Internet Explorer-støtte for å passere HTTP-henviseren.
Eksempelkode ser uten forsinkelse slik ut:







  



|
Men hvis noen vil omdirigere tilbake til hjemmesiden, kan han bruke følgende kodebit.
window.location = window.location.host
Det vil være nyttig hvis du har tre forskjellige miljøer som utvikling, iscenesettelse og produksjon.
Du kan utforske dette vinduet eller window.location-objektet ved å bare sette disse ordene i Chrome Console eller Firebugs Console.
|
JavaScript gir deg mange metoder for å hente og endre gjeldende URL som vises i nettleserens adressefelt. Alle disse metodene bruker Location-objektet, som er en egenskap for Window-objektet. Du kan opprette et nytt lokasjonsobjekt som har gjeldende URL slik:
var currentLocation = window.location;
Grunnleggende struktur for en URL
//:/ 
Protokoll - Spesifiserer protokollnavnet som skal brukes til å få tilgang til ressursen på Internett. (HTTP (uten SSL) eller HTTPS (med SSL))
vertsnavn - Vertsnavn angir verten som eier ressursen. For eksempel www.stackoverflow.com. En server gir tjenester ved å bruke navnet på verten.
port - Et portnummer som brukes til å gjenkjenne en bestemt prosess som en Internett- eller annen nettverksmelding skal videresendes til når den kommer til en server.
stinavn - Stien gir informasjon om den spesifikke ressursen i verten som webklienten vil ha tilgang til. For eksempel stackoverflow.com/index.html.
spørring - En spørringsstreng følger banekomponenten, og gir en informasjonsstreng som ressursen kan bruke til et eller annet formål (for eksempel som parametere for et søk eller som data som skal behandles).
hash - Ankerdelen av en URL inkluderer hash-tegnet (#).
Med disse egenskapene for Location-objekter kan du få tilgang til alle disse URL-komponentene
hash - Angir eller returnerer ankerdelen av en URL.
vert -Sett
eller returnerer vertsnavnet og porten til en URL.
vertsnavn -Sett eller
returnerer vertsnavnet til en URL.
href -Setter eller returnerer hele
URL.
banenavn - Angir eller returnerer banenavnet til en URL.
port - Angir eller returnerer portnummeret serveren bruker for en URL.
protokoll - Angir eller returnerer protokollen til en URL.
søk -sett
eller returnerer spørringsdelen av en URL
Nå Hvis du vil endre en side eller omdirigere brukeren til en annen side, kan du bruke href-egenskapen til Stedobjektet som dette
Du kan bruke href-egenskapen til Location-objektet.
window.location.href = "http://www.stackoverflow.com";
Location Object har også disse tre metodene
tilordne () - Laster inn et nytt dokument.
reload () - Last gjeldende dokument på nytt.
erstatt () - Erstatter det gjeldende dokumentet med et nytt
Du kan bruke tilordne () og erstatte metoder også for å omdirigere til andre sider som disse
location.assign ("http://www.stackoverflow.com");
location.replace ("http://www.stackoverflow.com");
Hvordan tilordne () og erstatte () er forskjellig - Forskjellen mellom erstatte () metode og tilordne () metode () er at erstatte () fjerner nettadressen til det gjeldende dokumentet fra dokumenthistorikken, betyr at det ikke er mulig å bruke "tilbake" -knappen for å navigere tilbake til originaldokumentet. Så bruk tildelingsmetoden () hvis du vil laste inn et nytt dokument, og vil gi muligheten til å navigere tilbake til originaldokumentet.
Du kan endre plasseringsobjektet href-egenskap ved hjelp av jQuery også som dette
$ (location) .attr ('href', url);
Og dermed kan du omdirigere brukeren til en annen url.
|
I utgangspunktet er jQuery bare et JavaScript-rammeverk, og for å gjøre noen av tingene som omdirigering i dette tilfellet, kan du bare bruke ren JavaScript, så i så fall har du 3 alternativer ved å bruke vaniljeJavaScript:
1) Ved å bruke stedet erstatter, vil dette erstatte den nåværende historikken til siden, betyr at det ikke er mulig å bruke tilbake-knappen for å gå tilbake til den opprinnelige siden.
window.location.replace ("http://stackoverflow.com");
2) Ved å bruke plasseringstildeling vil dette beholde historikken for deg, og ved å bruke tilbake-knappen kan du gå tilbake til den opprinnelige siden:
window.location.assign ("http://stackoverflow.com");
3) Jeg anbefaler å bruke en av de tidligere måtene, men dette kan være det tredje alternativet ved hjelp av ren JavaScript:
window.location.href = "http://stackoverflow.com";
Du kan også skrive en funksjon i jQuery for å håndtere den, men anbefales ikke, da det bare er en linjers ren JavaScript-funksjon. Du kan også bruke alle funksjonene ovenfor uten vindu hvis du allerede er i vindusomfanget, for eksempel window.location.replace ("http://stackoverflow.com"); kan være location.replace ("http://stackoverflow.com");
Også viser jeg dem alle på bildet nedenfor:
|
Bør bare være i stand til å stille inn ved hjelp av window.location.
Eksempel:
window.location = "https://stackoverflow.com/";
Her er et tidligere innlegg om emnet: Hvordan omdirigerer jeg til en annen webside?
|
Før jeg begynner, er jQuery et JavaScript-bibliotek som brukes til DOM-manipulering. Så du bør ikke bruke jQuery for en sideomdirigering.
Et sitat fra Jquery.com:
Mens jQuery kan kjøre uten større problemer i eldre nettleserversjoner,
vi tester ikke jQuery aktivt i dem og retter vanligvis ikke feil
som kan vises i dem.
Det ble funnet her:
https://jquery.com/browser-support/
Så jQuery er ikke en slutt-og-være-alt-løsning for bakoverkompatibilitet.
Følgende løsning ved hjelp av rå JavaScript fungerer i alle nettlesere og har vært standard i lang tid, slik at du ikke trenger noen biblioteker for støtte for nettlesere.
Denne siden omdirigeres til Google etter 3000 millisekunder



 eksempel 


Du blir snart omdirigert til google.

setTimeout (funksjon () { window.location.href = "http://www.google.com"; // URL-en som også blir omdirigert. }, 3000); // Jo større tall jo lengre forsinkelse. Ulike alternativer er som følger: window.location.href = "url"; // Simulerer normal navigering til en ny side window.location.replace ("url"); // Fjern nåværende URL fra historikken og erstatter den med en ny URL window.location.assign ("url"); // Legger til ny URL i historikkstakken og omdirigerer til den nye URLen window.history.back (); // Simulerer et klikk på tilbakeknappen window.history.go (-1); // Simulerer et klikk på tilbakeknappen window.history.back (-1); // Simulerer et trykk på tilbakeknappen window.navigate ("side.html"); // Samme som window.location = "url" Når du bruker erstatning, vil ikke tilbake-knappen gå tilbake til viderekoblingssiden, som om den aldri var i historien. Hvis du vil at brukeren skal kunne gå tilbake til viderekoblingssiden, bruker du window.location.href eller window.location.assign. Hvis du bruker et alternativ som lar brukeren gå tilbake til viderekoblingssiden, husk at når du går inn på viderekoblingssiden, vil den viderekoble deg tilbake. Så ta det i betraktning når du velger et alternativ for omdirigering. Under forhold der siden bare omdirigeres når en handling utføres av brukeren, vil det være greit å ha siden i bakknappshistorikken. Men hvis siden automatisk omdirigerer, bør du bruke erstatning slik at brukeren kan bruke tilbake-knappen uten å bli tvunget tilbake til siden omdirigering sender. Du kan også bruke metadata til å kjøre en sideomdirigering som følger. META Oppdater META-beliggenhet BASE kapring Mange flere metoder for å omdirigere den intetanende klienten din til en side de kanskje ikke ønsker å gå, finnes på denne siden (ikke en av dem er avhengig av jQuery): https://code.google.com/p/html5security/wiki/RedirectionMethods Jeg vil også påpeke at folk ikke liker å bli omdirigert tilfeldig. Bare omdiriger folk når det er absolutt behov for det. Hvis du begynner å omdirigere folk tilfeldig, vil de aldri gå til nettstedet ditt igjen. Neste avsnitt er hypotetisk: Du kan også bli rapportert som et skadelig nettsted. Hvis det skjer, når folk klikker på en lenke til nettstedet ditt, kan brukerens nettleser advare dem om at nettstedet er skadelig. Det som også kan skje er at søkemotorer kan begynne å slippe vurderingen din hvis folk rapporterer om en dårlig opplevelse på nettstedet ditt. Les Googles retningslinjer for nettredaktører om viderekoblinger: https://support.google.com/webmasters/answer/2721217?hl=no&ref_topic=6001971 Her er en morsom liten side som sparker deg ut av siden. Gå bort

Gå bort

setTimeout (funksjon () { window.history.back (); }, 3000); Hvis du kombinerer de to sideksemplene sammen, vil du ha en spedbarnsløkke for å omdirigere detvil garantere at brukeren aldri vil bruke nettstedet ditt igjen. | var url = 'asdf.html'; window.location.href = url; | Du kan gjøre det uten jQuery som: window.location = "http://dittdomene.com"; Og hvis du bare vil ha jQuery, kan du gjøre det som: $ jq (vindu) .attr ("location", "http://yourdomain.com"); | Dette fungerer med jQuery: $ (vindu) .attr ("location", "http://google.fr"); | # HTML Page Redirect ved hjelp av jQuery / JavaScript-metoden Prøv denne eksempelkoden: funksjon YourJavaScriptFunction () { var i = $ ('# login'). val (); hvis (i == 'innlogging') window.location = "Login.php"; ellers window.location = "Logout.php"; } Hvis du vil oppgi en fullstendig URL som window.location = "www.google.co.in" ;. | Opprinnelig spørsmål: "Hvordan omdirigere ved hjelp av jQuery?", Derav implementerer svaret jQuery >> Gratis brukstilfelle. For å bare omdirigere til en side med JavaScript: window.location.href = "/ contact /"; Eller hvis du trenger en forsinkelse: setTimeout (funksjon () { window.location.href = "/ contact /"; }, 2000); // Tid i millisekunder jQuery lar deg enkelt velge elementer fra en webside. Du kan finne alt du vil ha på en side, og deretter bruke jQuery til å legge til spesialeffekter, reagere på brukerhandlinger, eller vise og skjule innhold i eller utenfor elementet du har valgt. Alle disse oppgavene starter med å vite hvordan du velger et element eller en hendelse. $ ('a, img'). på ('klikk', funksjon (e) { e.preventDefault (); $ (dette). animere ({ opacity: 0 // Sett litt CSS-animasjon her }, 500); setTimeout (funksjon () { // OK, ferdig med jQuery-ansatte, la oss gå videre window.location.href = "/ contact /"; }, 500); }); Tenk deg at noen skrev et skript / plugin med 10000 kodelinjer. Med jQuery kan du koble til denne koden med bare en linje eller to. | Du må legge denne linjen i koden din: $ (location) .attr ("href", "http://stackoverflow.com"); Hvis du ikke har jQuery, kan du gå med JavaScript: window.location.replace ("http://stackoverflow.com"); window.location.href ("http://stackoverflow.com"); | Så spørsmålet er hvordan du lager en viderekoblingsside, og ikke hvordan du viderekobler til et nettsted? Du trenger bare å bruke JavaScript for dette. Her er litt liten kode som vil skape en dynamisk viderekoblingsside. var url = window.location.search.split ('url =') [1]; // Få nettadressen etter? Url = if (url) window.location.replace (url); Så si at du bare legger dette utdraget i en redirect / index.html-fil på nettstedet ditt, du kan bruke det slik. http://www.mywebsite.com/redirect?url=http://stackoverflow.com Og hvis du går til den lenken, vil den automatisk omdirigere deg til stackoverflow.com. Lenke til dokumentasjon Og det er slik du lager en enkel viderekoblingsside med JavaScript Redigere: Det er også en ting å merke seg. Jeg har lagt til window.location.replace i koden min fordi jeg synes den passer til en viderekoblingsside, men du må vite at når du bruker window.location.replace, og du blir omdirigert, når du trykker på tilbake-knappen i nettleseren din, vil den ikke kom tilbake til viderekoblingssiden, og den vil gå tilbake til siden før den, ta en titt på denne lille demo-tingen. Eksempel: Prosessen: lagre startside => omdirigere side til google => google Når du er på google: google => tilbake-knapp i nettleseren => lagre hjemmet Så hvis dette passer dine behov, bør alt være bra. Hvis du vil inkludere viderekoblingssiden i nettleserloggen, erstatt denne if (url) window.location.replace (url); med hvis (url) window.location.href = url; | På klikkfunksjonen din er det bare å legge til: window.location.href = "URLen du vil omdirigere"; $ ('# id'). klikk (funksjon () { window.location.href = "http://www.google.com"; }); | Prøv dette: location.assign ("http://www.google.com"); Kodebit av eksempel. | jQuery er ikke nødvendig. Du får til dette: window.open ("URL", "_ self", "", "") Det er så enkelt! Den beste måten å starte en HTTP-forespørsel på er document.loacation.href.replace ('URL'). | Skriv først ordentlig. Du vil navigere i en applikasjon etter en annen lenke fra søknaden din om en annen lenke. Her er koden: window.location.href = "http://www.google.com"; Og hvis du vil navigere i sider i applikasjonen din, har jeg også kode hvis du vil. | Du kan omdirigere i jQuery slik: $ (location) .attr ('href', 'http://yourPage.com/'); | Bruke JavaScript: Metode 1: window.location.href = "http://google.com"; Metode 2: window.location.replace ("http://google.com"); Ved hjelp av jQuery: Metode 1: $ (sted) $ (location) .attr ('href', 'http://google.com'); Metode 2: Gjenbrukbar funksjon jQuery.fn.redirectTo = funksjon (url) { window.location.href = url; } jQuery (vindu) .redirectTo ("http://google.com"); | I JavaScript og jQuery kan vi bruke følgende kode for å omdirigere en side til en annen side: window.location.href = "http://google.com"; window.location.replace ("page1.html"); | ECMAScript 6 + jQuery, 85 byte $ ({jQueryCode: (url) => location.replace (url)}). attr ("jQueryCode") ("http://example.com") Vennligst ikke drepmeg, dette er en vits. Det er en spøk. Dette er en vits. Dette ga "et svar på spørsmålet", i den forstand at det ba om en løsning "ved hjelp av jQuery" som i dette tilfellet innebærer å tvinge det inn i ligningen på en eller annen måte. Ferrybig trenger tilsynelatende vitsen forklart (fremdeles tuller, jeg er sikker på at det er begrensede muligheter på vurderingsskjemaet), så uten videre: Andre svar bruker jQuerys attr () på plasseringen eller vindusobjekter unødvendig. Dette svaret misbruker det også, men på en mer latterlig måte. I stedet for å bruke den til å angi plasseringen, bruker dette attr () for å hente en funksjon som setter plasseringen. Funksjonen heter jQueryCode, selv om det ikke er noe jQuery om det, og å kalle en funksjon for noeCode er bare fryktelig, spesielt når noe ikke engang er et språk. "85 byte" er en referanse til Code Golf. Golf er åpenbart ikke noe du bør gjøre utenfor kodegolf, og dessuten er dette svaret tydeligvis ikke faktisk golfet. I utgangspunktet krympe. | Javascript: window.location.href = 'www.your_url.com'; window.top.location.href = 'www.your_url.com'; window.location.replace ('www.your_url.com'); Jquery: var url = 'www.your_url.com'; $ (location) .attr ('href', url); $ (location). prop ('href', url); // i stedet for plassering kan du bruke vindu | Her er en viderekobling av tidsforsinkelse. Du kan stille forsinkelsestiden til hva du vil: Dokumenttittelen forsinkelse (8000)
Du blir omdirigert om 8 sekunder!
| Det er tre hovedmåter å gjøre dette på, window.location.href = 'blaah.com'; window.location.assign ('blaah.com'); og... window.location.replace ('blaah.com'); Den siste er best, for en tradisjonell viderekobling, fordi den ikke lagrer siden du gikk til før den ble omdirigert i søkeloggen din. Men hvis du bare vil åpne en fane med JavaScript, kan du bruke noe av det ovenstående EDIT: Vindusprefikset er valgfritt. | 1 2 Neste Er ikke svaret du leter etter? Bla gjennom andre spørsmål merket javascript jquery omdirigering eller still ditt eget spørsmål.